#ifndef E_ITEM_IN_PLUGIN_H
#define E_ITEM_IN_PLUGIN_H

#include <DefineCommon.h>
#include <EMatrix4x4.h>
#include <EString.h>
#include <EItem.h>
// #include <DefineLibUiQt.h>
#include "EItemInPluginParent.h"

class EItemInPlugin;
typedef SmartPtr(EItemInPlugin) EItemInPluginPtr;

/**
 * @brief 
 * A class for refection and plugin testing  
 * @param param1
 * @param param2
 * @return
 */
class EItemInPlugin : public EItemInPluginParent
{
public:
    EItemInPlugin();
    virtual ~EItemInPlugin();

    /*some function that may be called by ui*/
    void ui_testAdd(double v1, double v2);

    //some properties that will show in ui
    int ui_testInt = 5.0;
	void OnSet_ui_testInt(const int& value);
	void OnGet_ui_testInt(int& value);

    double ui_testDouble = 9.9;//double m_ui_double_max;double m_ui
    void OnSet_ui_testDouble(const double& value);
    void OnGet_ui_testDouble(double& value);

    bool ui_testBool = true;
	void OnSet_ui_testBool(const bool& value);
	void OnGet_ui_testBool(bool& value);

    EVec3 ui_testVec3 = EVec3(1,2,3);
    void OnSet_ui_testVec3(const EVec3& value);
    void OnGet_ui_testVec3(EVec3& value);

    EVec4 ui_testVec4 = EVec4(3,3,3,3);
	void OnSet_ui_testVec4(const EVec4& value);
	void OnGet_ui_testVec4(EVec4& value);

    EMatrix4x4 ui_testMatrix;
	void OnSet_ui_testMatrix(const EMatrix4x4& value);
	void OnGet_ui_testMatrix(EMatrix4x4& value);

    EString ui_testString = "Hello From EItemInPlugin";
	void OnSet_ui_testString(const EString& value);
	void OnGet_ui_testString(EString& value);


protected:

};

#endif // E_ITEM_IN_PLUGIN_H
